package main

import "fmt"

//两个chan 都是 int 类型的
func fibonacii(c, quit chan int) {
	x, y := 1, 1
	for {
		//完成监控多个channel的状态
		select {
		//如果c可写，则该case就会进来
		case c <- x:
			x = y
			y = x + y
			//如果quit可读，则该case就会进来
		case <-quit:
			fmt.Println("quit")
			return
		}
	}
}

func main() {
	c := make(chan int)
	quit := make(chan int)
	//sub go
	go func() {
		for i := 0; i < 10; i++ {
			//不断的尝试从 c 中获取数据 并打印
			//会阻塞
			fmt.Println(<-c)
		}
		//发送一个数据
		quit <- 0
	}()
	//main go
	fibonacii(c, quit)
}
